{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "28bd96bd",
   "metadata": {},
   "source": [
    "# Lesson 5 - An integer to Binary-Coded decimal (BCD) Converter #\n",
    "\n",
    "BCD stands for Binary-Coded Decimal. BCD was used in early computers to follow human practice.\n",
    "\n",
    "We build a BCD converter that translates an integer number into its BCD representation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1c80d2e0",
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import py4hw"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38d4f8b4",
   "metadata": {},
   "source": [
    "### Converting an Int value to a number of BCD digits  ###\n",
    "To convert any intenger value to a 2 digit BCD we have to divide by 10 to get the highest digit and take the reminder of the division to get the lower digit. \n",
    "\n",
    "$BCD_1 = n / 10$\n",
    "\n",
    "$BCD_0 = n \\mod 10$\n",
    "\n",
    "We can repeat the same idea to get any number of digits.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "bba4f7c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "class IntToBCD(py4hw.Logic):\n",
    "    def __init__(self, parent, name, a, r):\n",
    "        super().__init__(parent, name)\n",
    "        \n",
    "        self.addIn('a',a)\n",
    "        self.addOut('r', r)\n",
    "        \n",
    "        hlp = py4hw.LogicHelper(self)\n",
    "        \n",
    "        w = a.getWidth()\n",
    "        digits = int(math.ceil(math.log10((2**w)-1)))\n",
    "        print('Number of BCD digits:', digits)\n",
    "        \n",
    "        assert(r.getWidth() >= (digits*4))\n",
    "        \n",
    "        ret = []\n",
    "        v = a\n",
    "        k10 = hlp.hw_constant(4, 10)\n",
    "        \n",
    "        for i in range(digits):\n",
    "            rem = self.wire('mod{}'.format(i), 4)\n",
    "            div = self.wire('div{}'.format(i), 4)\n",
    "            py4hw.Mod(self, 'mod{}'.format(i), v, k10, rem)\n",
    "            py4hw.Div(self, 'div{}'.format(i), v, k10, div)\n",
    "            ret.append(rem)\n",
    "            v = div\n",
    "            \n",
    "        py4hw.ConcatenateLSBF(self, 'r', ret, r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "74572c4a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of BCD digits: 3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1095x580 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hw = py4hw.HWSystem()\n",
    "hlp = py4hw.LogicHelper(hw)\n",
    "\n",
    "count = hw.wire('count', 8)\n",
    "bcd = hw.wire('bcd', 4*3)\n",
    "py4hw.Counter(hw, 'count', inc=hlp.hw_constant(1,1), reset=hlp.hw_constant(1,0), q=count)\n",
    "\n",
    "dut = IntToBCD(hw, 'bcd', count, bcd)\n",
    "\n",
    "watch = [count, bcd]\n",
    "watch.extend(list(dut._wires.values()))\n",
    "\n",
    "wvf = py4hw.Waveform(hw, 'wvf', watch)\n",
    "sch = py4hw.Schematic(dut)\n",
    "sch.draw()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "b57f96f6",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "#for i in range(15):\n",
    "#    hw.getSimulator().clk()\n",
    "#    print('{:03X}'.format(bcd.get()))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92a66d85",
   "metadata": {},
   "source": [
    "### Simulation ###\n",
    "Notice that the hexadecimal representation of the BCD value (bcd) is equivalent to the decimal representation of integer value (count)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "a2c73e9d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>var WaveSkin=WaveSkin||{};WaveSkin.default=[\"svg\",{\"id\":\"svg\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"height\":\"0\"},[\"style\",{\"type\":\"text/css\"},\"text{font-size:11pt;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;fill-opacity:1;font-family:Helvetica}.muted{fill:#aaa}.warning{fill:#f6b900}.error{fill:#f60000}.info{fill:#0041c4}.success{fill:#00ab00}.h1{font-size:33pt;font-weight:bold}.h2{font-size:27pt;font-weight:bold}.h3{font-size:20pt;font-weight:bold}.h4{font-size:14pt;font-weight:bold}.h5{font-size:11pt;font-weight:bold}.h6{font-size:8pt;font-weight:bold}.s1{fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s2{fill:none;stroke:#000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s3{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s4{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s5{fill:#fff;stroke:none}.s6{color:#000;fill:#ffffb4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s7{color:#000;fill:#ffe0b9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s8{color:#000;fill:#b9e0ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s9{fill:#000;fill-opacity:1;stroke:none}.s10{color:#000;fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s11{fill:#0041c4;fill-opacity:1;stroke:none}.s12{fill:none;stroke:#0041c4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}\"],[\"defs\",[\"g\",{\"id\":\"socket\"},[\"rect\",{\"y\":\"15\",\"x\":\"6\",\"height\":\"20\",\"width\":\"20\"}]],[\"g\",{\"id\":\"pclk\"},[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"nclk\"},[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"000\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m0\"},[\"path\",{\"d\":\"m0,20 3,0 3,-10 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0md\"},[\"path\",{\"d\":\"m8,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m0,20 5,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"111\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m1\"},[\"path\",{\"d\":\"M0,0 3,0 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"1md\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mu\"},[\"path\",{\"d\":\"M0,0 5,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M8,0 18,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"1mz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xxx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm0\"},[\"path\",{\"d\":\"M0,0 4,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 8,17\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm1\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 4,20 9,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 5,15\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmd\"},[\"path\",{\"d\":\"m0,0 4,0 c 3,10 6,20 16,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5.5,4.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 8,12\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m5,20 5,-5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m10,20 2.5,-2.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 10,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 6,14\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmz\"},[\"path\",{\"d\":\"m0,0 4,0 c 6,10 11,10 16,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4.5,0.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 6.5,3.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 8.5,6.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 11.5,8.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"ddd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dm0\"},[\"path\",{\"d\":\"m0,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,20 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dm1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dmu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"uuu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"um0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"um1\"},[\"path\",{\"d\":\"M0,0 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,0 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"umd\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"umz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s4\"}]],[\"g\",{\"id\":\"zzz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm0\"},[\"path\",{\"d\":\"m0,10 6,0 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm1\"},[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmx\"},[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"zmd\"},[\"path\",{\"d\":\"m0,10 7,0 c 3,5 8,10 13,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmu\"},[\"path\",{\"d\":\"m0,10 7,0 C 10,5 15,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"gap\"},[\"path\",{\"d\":\"m7,-2 -4,0 c -5,0 -5,24 -10,24 l 4,0 C 2,22 2,-2 7,-2 z\",\"class\":\"s5\"}],[\"path\",{\"d\":\"M-7,22 C -2,22 -2,-2 3,-2\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M-3,22 C 2,22 2,-2 7,-2\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-3\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-3\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-3\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-3\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-3\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-3\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-3\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-4\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-4\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-5\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-5\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-4\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-4\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-4\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-4\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-4\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-5\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-5\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-5\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-5\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-5\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Pclk\"},[\"path\",{\"d\":\"M-3,12 0,3 3,12 C 1,11 -1,11 -3,12 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Nclk\"},[\"path\",{\"d\":\"M-3,8 0,17 3,8 C 1,9 -1,9 -3,8 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-2\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-2\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-2\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-2\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-2\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-2\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-2\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"arrow0\"},[\"path\",{\"d\":\"m-12,-3 9,3 -9,3 c 1,-2 1,-4 0,-6 z\",\"class\":\"s11\"}],[\"path\",{\"d\":\"M0,0 -15,0\",\"class\":\"s12\"}]],[\"marker\",{\"id\":\"arrowhead\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"0 -4 11 8\",\"refX\":\"15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 11 0 0 4z\"}]],[\"marker\",{\"id\":\"arrowtail\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"-11 -4 11 8\",\"refX\":\"-15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 -11 0 0 4z\"}]]],[\"g\",{\"id\":\"waves\"},[\"g\",{\"id\":\"lanes\"}],[\"g\",{\"id\":\"groups\"}]]];\n",
       "</script><script>/*! wavedrom 2016-07-28 */\n",
       "!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error(\"Cannot find module '\"+g+\"'\");throw j.code=\"MODULE_NOT_FOUND\",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";function d(a,b){function c(a){var b=parseInt(e.style.left,10),d=parseInt(e.style.top,10);(a.x<b||a.x>b+e.offsetWidth||a.y<d||a.y>d+e.offsetHeight)&&(e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1))}var d,e;d=document.getElementById(b+a),d.childNodes[0].addEventListener(\"contextmenu\",function(f){var g,h,i;e=document.createElement(\"div\"),e.className=\"wavedromMenu\",e.style.top=f.y+\"px\",e.style.left=f.x+\"px\",g=document.createElement(\"ul\"),h=document.createElement(\"li\"),h.innerHTML=\"Save as PNG\",g.appendChild(h),i=document.createElement(\"li\"),i.innerHTML=\"Save as SVG\",g.appendChild(i),e.appendChild(g),document.body.appendChild(e),h.addEventListener(\"click\",function(){var f,g,h,i,j,k,l,m;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=new Image,i.src=h,j=document.createElement(\"canvas\"),j.width=i.width,j.height=i.height,k=j.getContext(\"2d\"),k.drawImage(i,0,0),l=j.toDataURL(\"image/png\"),m=document.createElement(\"a\"),m.href=l,m.download=\"wavedrom.png\",m.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),i.addEventListener(\"click\",function(){var f,g,h,i;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=document.createElement(\"a\"),i.href=h,i.download=\"wavedrom.svg\",i.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),e.addEventListener(\"contextmenu\",function(a){a.preventDefault()},!1),document.body.addEventListener(\"mousedown\",c,!1),f.preventDefault()},!1)}b.exports=d},{}],2:[function(a,b,c){\"use strict\";var d=a(\"./jsonml-parse\");b.exports=d},{\"./jsonml-parse\":15}],3:[function(a,b,c){\"use strict\";function d(){f(0,e(\"InputJSON_0\"),\"WaveDrom_Display_\")}var e=a(\"./eva\"),f=a(\"./render-wave-form\");b.exports=d},{\"./eva\":4,\"./render-wave-form\":28}],4:[function(require,module,exports){\"use strict\";function eva(id){function erra(a){return{signal:[{name:[\"tspan\",[\"tspan\",{class:\"error h5\"},\"Error: \"],a.message]}]}}var TheTextBox,source;if(TheTextBox=document.getElementById(id),TheTextBox.type&&\"textarea\"===TheTextBox.type)try{source=eval(\"(\"+TheTextBox.value+\")\")}catch(a){return erra(a)}else try{source=eval(\"(\"+TheTextBox.innerHTML+\")\")}catch(a){return erra(a)}if(\"[object Object]\"!==Object.prototype.toString.call(source))return erra({message:'[Semantic]: The root has to be an Object: \"{signal:[...]}\"'});if(source.signal){if(\"[object Array]\"!==Object.prototype.toString.call(source.signal))return erra({message:'[Semantic]: \"signal\" object has to be an Array \"signal:[]\"'})}else{if(!source.assign)return erra({message:'[Semantic]: \"signal:[...]\" or \"assign:[...]\" property is missing inside the root Object'});if(\"[object Array]\"!==Object.prototype.toString.call(source.assign))return erra({message:'[Semantic]: \"assign\" object hasto be an Array \"assign:[]\"'})}return source}module.exports=eva},{}],5:[function(a,b,c){\"use strict\";function d(a){var b=0,c=0,d=[];return a.forEach(function(a){\"vvv-2\"===a||\"vvv-3\"===a||\"vvv-4\"===a||\"vvv-5\"===a?c+=1:0!==c&&(d.push(b-(c+1)/2),c=0),b+=1}),0!==c&&d.push(b-(c+1)/2),d}b.exports=d},{}],6:[function(a,b,c){\"use strict\";function d(a,b,c){var d,e,f=[];if(4===a.length){for(e=0;e<c;e+=1){for(f.push(a[0]),d=0;d<b;d+=1)f.push(a[1]);for(f.push(a[2]),d=0;d<b;d+=1)f.push(a[3])}return f}for(1===a.length&&a.push(a[0]),f.push(a[0]),d=0;d<c*(2*(b+1))-1;d+=1)f.push(a[1]);return f}b.exports=d},{}],7:[function(a,b,c){\"use strict\";function d(a,b,c){var d;switch(d=[],a){case\"p\":d=e([\"pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"n\":d=e([\"nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"P\":d=e([\"Pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"N\":d=e([\"Nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"l\":case\"L\":case\"0\":d=e([\"000\"],b,c);break;case\"h\":case\"H\":case\"1\":d=e([\"111\"],b,c);break;case\"=\":d=e([\"vvv-2\"],b,c);break;case\"2\":d=e([\"vvv-2\"],b,c);break;case\"3\":d=e([\"vvv-3\"],b,c);break;case\"4\":d=e([\"vvv-4\"],b,c);break;case\"5\":d=e([\"vvv-5\"],b,c);break;case\"d\":d=e([\"ddd\"],b,c);break;case\"u\":d=e([\"uuu\"],b,c);break;case\"z\":d=e([\"zzz\"],b,c);break;default:d=e([\"xxx\"],b,c)}return d}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],8:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h,i,j,k,l,m,n,o,p,q,r,s;return d={p:\"pclk\",n:\"nclk\",P:\"Pclk\",N:\"Nclk\",h:\"pclk\",l:\"nclk\",H:\"Pclk\",L:\"Nclk\"},f={0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},g={0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},h={p:\"0\",n:\"1\",P:\"0\",N:\"1\",h:\"1\",l:\"0\",H:\"1\",L:\"0\",0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},i={p:\"\",n:\"\",P:\"\",N:\"\",h:\"\",l:\"\",H:\"\",L:\"\",0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},j={p:\"111\",n:\"000\",P:\"111\",N:\"000\",h:\"111\",l:\"000\",H:\"111\",L:\"000\",0:\"000\",1:\"111\",x:\"xxx\",d:\"ddd\",u:\"uuu\",z:\"zzz\",\"=\":\"vvv-2\",2:\"vvv-2\",3:\"vvv-3\",4:\"vvv-4\",5:\"vvv-5\"},k={p:\"nclk\",n:\"pclk\",P:\"nclk\",N:\"pclk\"},l={p:\"000\",n:\"111\",P:\"000\",N:\"111\"},m={hp:\"111\",Hp:\"111\",ln:\"000\",Ln:\"000\",nh:\"111\",Nh:\"111\",pl:\"000\",Pl:\"000\"},n=a.split(\"\"),o=j[n[1]],p=d[n[1]],void 0===p?(q=f[n[1]],void 0===q?e([\"xxx\"],b,c):(r=h[n[0]],void 0===r?e([\"xxx\"],b,c):e([r+\"m\"+q+i[n[0]]+g[n[1]],o],b,c))):(s=m[a],void 0!==s&&(p=s),q=k[n[1]],void 0===q?e([p,o],b,c):e([p,o,q,l[n[1]]],b,c))}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],9:[function(a,b,c){\"use strict\";var d=a(\"./process-all\"),e=a(\"./eva\"),f=a(\"./render-wave-form\"),g=a(\"./editor-refresh\");b.exports={processAll:d,eva:e,renderWaveForm:f,editorRefresh:g}},{\"./editor-refresh\":3,\"./eva\":4,\"./process-all\":21,\"./render-wave-form\":28}],10:[function(a,b,c){\"use strict\";function d(a,b){for(var c,d;b.childNodes.length;)b.removeChild(b.childNodes[0]);d=[\"svg\",{id:\"svgcontent_\"+a,xmlns:f.svg,\"xmlns:xlink\":f.xlink,overflow:\"hidden\"},[\"style\",\".pinname {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:end; font-family:Helvetica} .wirename {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:start; font-family:Helvetica} .wirename:hover {fill:blue} .gate {color:#000; fill:#ffc; fill-opacity: 1;stroke:#000; stroke-width:1; stroke-opacity:1} .gate:hover {fill:red !important; } .wire {fill:none; stroke:#000; stroke-width:1; stroke-opacity:1} .grid {fill:#fff; fill-opacity:1; stroke:none}\"]],c=e(d),b.insertBefore(c,null)}var e=a(\"./create-element\"),f=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30}],11:[function(a,b,c){\"use strict\";function d(a,b,c,d){for(var h,i,j;b.childNodes.length;)b.removeChild(b.childNodes[0]);for(i in g)break;j=g.default||g[i],c&&c.config&&c.config.skin&&g[c.config.skin]&&(j=g[c.config.skin]),0===a?(d.xs=Number(j[3][1][2][1].width),d.ys=Number(j[3][1][2][1].height),d.xlabel=Number(j[3][1][2][1].x),d.ym=Number(j[3][1][2][1].y)):j=[\"svg\",{id:\"svg\",xmlns:f.svg,\"xmlns:xlink\":f.xlink,height:\"0\"},[\"g\",{id:\"waves\"},[\"g\",{id:\"lanes\"}],[\"g\",{id:\"groups\"}]]],j[j.length-1][1].id=\"waves_\"+a,j[j.length-1][2][1].id=\"lanes_\"+a,j[j.length-1][3][1].id=\"groups_\"+a,j[1].id=\"svgcontent_\"+a,j[1].height=0,h=e(j),b.insertBefore(h,null)}var e=a(\"./create-element\"),f=a(\"./w3\"),g=a(\"./wave-skin\");b.exports=d},{\"./create-element\":2,\"./w3\":30,\"./wave-skin\":32}],12:[function(a,b,c){\"use strict\";function d(a,b,c){\"string\"==typeof c&&(c=new Function(\"event\",c)),\"function\"==typeof c&&(a[b]=c)}function e(a,b){if(b.name&&document.attachEvent)try{var c=document.createElement(\"<\"+a.tagName+\" name='\"+b.name+\"'>\");a.tagName===c.tagName&&(a=c)}catch(a){console.log(a)}for(var e in b)if(b.hasOwnProperty(e)){var i=b[e];e&&null!==i&&\"undefined\"!=typeof i&&(e=f[e.toLowerCase()]||e,\"style\"===e?\"undefined\"!=typeof a.style.cssText?a.style.cssText=i:a.style=i:h[e]?(d(a,e,i),g[e]&&d(a,g[e],i)):\"string\"==typeof i||\"number\"==typeof i||\"boolean\"==typeof i?(a.setAttribute(e,i),g[e]&&a.setAttribute(g[e],i)):(a[e]=i,g[e]&&(a[g[e]]=i)))}return a}var f={rowspan:\"rowSpan\",colspan:\"colSpan\",cellpadding:\"cellPadding\",cellspacing:\"cellSpacing\",tabindex:\"tabIndex\",accesskey:\"accessKey\",hidefocus:\"hideFocus\",usemap:\"useMap\",maxlength:\"maxLength\",readonly:\"readOnly\",contenteditable:\"contentEditable\"},g={enctype:\"encoding\",onscroll:\"DOMMouseScroll\"},h=function(a){for(var b,c={};a.length;)b=a.shift(),c[\"on\"+b.toLowerCase()]=b;return c}(\"blur,change,click,dblclick,error,focus,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,resize,scroll,select,submit,unload\".split(\",\"));b.exports=e},{}],13:[function(a,b,c){\"use strict\";function d(a,b){b&&(a.tagName&&\"style\"===a.tagName.toLowerCase()&&document.createStyleSheet?a.cssText=b:a.canHaveChildren!==!1&&a.appendChild(b))}b.exports=d},{}],14:[function(a,b,c){\"use strict\";function d(a){var b=document.createElement(\"div\");if(b.innerHTML=a,e(b),1===b.childNodes.length)return b.firstChild;for(var c=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\");b.firstChild;)c.appendChild(b.firstChild);return c}var e=a(\"./jsonml-trim-whitespace\");b.exports=d},{\"./jsonml-trim-whitespace\":16}],15:[function(a,b,c){\"use strict\";function d(a){return a instanceof Array&&\"string\"==typeof a[0]}function e(a,b,c){return document.createTextNode(\"[\"+a+\"-\"+c+\"]\")}var f,g,h=a(\"./jsonml-hydrate\"),i=a(\"./w3\"),j=a(\"./jsonml-append-child\"),k=a(\"./jsonml-add-attributes\"),l=a(\"./jsonml-trim-whitespace\"),m=null;f=function(a,b,c){for(var d=1;d<b.length;d++)b[d]instanceof Array||\"string\"==typeof b[d]?j(a,g(b[d],c)):b[d]&&b[d].value?j(a,h(b[d].value)):\"object\"==typeof b[d]&&null!==b[d]&&1===a.nodeType&&(a=k(a,b[d]));return a},g=function(a,b){var c;try{if(!a)return null;if(\"string\"==typeof a)return document.createTextNode(a);if(a&&a.value)return h(a.value);if(!d(a))throw new SyntaxError(\"invalid JsonML\");var k=a[0];if(!k){for(var n=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\"),o=2;o<a.length;o++)j(n,g(a[o],b));return l(n),1===n.childNodes.length?n.firstChild:n}return\"style\"===k.toLowerCase()&&document.createStyleSheet?(f(document.createStyleSheet(),a,b),null):(c=f(document.createElementNS(i.svg,k),a,b),l(c),c)}catch(c){try{var p=\"function\"==typeof m?m:e;return p(c,a,b)}catch(a){return document.createTextNode(\"[\"+a+\"]\")}}},b.exports=g},{\"./jsonml-add-attributes\":12,\"./jsonml-append-child\":13,\"./jsonml-hydrate\":14,\"./jsonml-trim-whitespace\":16,\"./w3\":30}],16:[function(a,b,c){\"use strict\";function d(a){return a&&3===a.nodeType&&(!a.nodeValue||!/\\S/.exec(a.nodeValue))}function e(a){if(a){for(;d(a.firstChild);)a.removeChild(a.firstChild);for(;d(a.lastChild);)a.removeChild(a.lastChild)}}b.exports=e},{}],17:[function(a,b,c){\"use strict\";var d={xs:20,ys:20,xg:120,yh0:0,yh1:0,yf0:0,yf1:0,y0:5,yo:30,tgo:-10,ym:15,xlabel:6,xmax:1,scale:1,head:{},foot:{}};b.exports=d},{}],18:[function(a,b,c){\"use strict\";function d(a,b){function c(a){return a>0?Math.round(a):1}var d;b.hscale=1,b.hscale0&&(b.hscale=b.hscale0),a&&a.config&&a.config.hscale&&(d=Math.round(c(a.config.hscale)),d>0&&(d>100&&(d=100),b.hscale=d)),b.yh0=0,b.yh1=0,b.head=a.head,b.xmin_cfg=0,b.xmax_cfg=1e12,a&&a.config&&a.config.hbounds&&2==a.config.hbounds.length&&(a.config.hbounds[0]=Math.floor(a.config.hbounds[0]),a.config.hbounds[1]=Math.ceil(a.config.hbounds[1]),a.config.hbounds[0]<a.config.hbounds[1]&&(b.xmin_cfg=2*Math.floor(a.config.hbounds[0]),b.xmax_cfg=2*Math.floor(a.config.hbounds[1]))),a&&a.head&&((a.head.tick||0===a.head.tick||a.head.tock||0===a.head.tock)&&(b.yh0=20),(a.head.tick||0===a.head.tick)&&(a.head.tick=a.head.tick+b.xmin_cfg/2),(a.head.tock||0===a.head.tock)&&(a.head.tock=a.head.tock+b.xmin_cfg/2),a.head.text&&(b.yh1=46,b.head.text=a.head.text)),b.yf0=0,b.yf1=0,b.foot=a.foot,a&&a.foot&&((a.foot.tick||0===a.foot.tick||a.foot.tock||0===a.foot.tock)&&(b.yf0=20),(a.foot.tick||0===a.foot.tick)&&(a.foot.tick=a.foot.tick+b.xmin_cfg/2),(a.foot.tock||0===a.foot.tock)&&(a.foot.tock=a.foot.tock+b.xmin_cfg/2),a.foot.text&&(b.yf1=46,b.foot.text=a.foot.text))}b.exports=d},{}],19:[function(a,b,c){\"use strict\";function d(a,b,c){var d,h,i,j,k,l,m=[],n=[],o=[];for(m=a.split(\"\"),i=m.shift(),k=!1,d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;for(n=n.concat(e(i,b,d));m.length;){for(h=i,i=m.shift(),\"<\"===i&&(k=!0,i=m.shift()),\">\"===i&&(k=!1,i=m.shift()),d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;n=k?n.concat(f(h+i,0,d-c.period)):n.concat(f(h+i,b,d))}for(j=0;j<c.phase;j+=1)o.push(n.shift());return o.length>0?(l=g(o).length,1==g([o[o.length-1]]).length&&1==g([n[0]]).length&&(l-=1)):l=0,[n,l]}var e=a(\"./gen-first-wave-brick\"),f=a(\"./gen-wave-brick\"),g=a(\"./find-lane-markers\");b.exports=d},{\"./find-lane-markers\":5,\"./gen-first-wave-brick\":7,\"./gen-wave-brick\":8}],20:[function(a,b,c){\"use strict\";function d(a,b){var c;return c=a.data,void 0===c?null:(\"string\"==typeof c&&(c=c.split(\" \")),c=c.slice(b))}function e(a,b){var c,e,g,h,i,j=[],k=[];for(c in a)e=a[c],b.period=e.period?e.period:1,b.phase=(e.phase?2*e.phase:0)+b.xmin_cfg,j.push([]),k[0]=e.name||\" \",k[1]=(e.phase||0)+b.xmin_cfg/2,e.wave?(h=f(e.wave,b.period*b.hscale-1,b),g=h[0],i=h[1]):g=null,j[j.length-1][0]=k.slice(0),j[j.length-1][1]=g,j[j.length-1][2]=d(e,i);return j}var f=a(\"./parse-wave-lane\");b.exports=e},{\"./parse-wave-lane\":19}],21:[function(a,b,c){\"use strict\";function d(){var a,b,c,d;for(c=0,a=document.querySelectorAll(\"*\"),b=0;b<a.length;b++)a.item(b).type&&\"WaveDrom\"===a.item(b).type&&(a.item(b).setAttribute(\"id\",\"InputJSON_\"+c),d=document.createElement(\"div\"),d.id=\"WaveDrom_Display_\"+c,a.item(b).parentNode.insertBefore(d,a.item(b)),c+=1);for(b=0;b<c;b+=1)g(b,e(\"InputJSON_\"+b),\"WaveDrom_Display_\"),f(b,\"WaveDrom_Display_\");document.head.innerHTML+='<style type=\"text/css\">div.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}</style>'}var e=a(\"./eva\"),f=a(\"./append-save-as-dialog\"),g=a(\"./render-wave-form\");b.exports=d},{\"./append-save-as-dialog\":1,\"./eva\":4,\"./render-wave-form\":28}],22:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f={},g={x:10};for(\"string\"!=typeof a[0]&&\"number\"!=typeof a[0]||(e=a[0],g.x=25),b.x+=g.x,c=0;c<a.length;c++)\"object\"==typeof a[c]&&(\"[object Array]\"===Object.prototype.toString.call(a[c])?(f.y=b.y,b=d(a[c],b),b.groups.push({x:b.xx,y:f.y,height:b.y-f.y,name:b.name})):(b.lanes.push(a[c]),b.width.push(b.x),b.y+=1));return b.xx=b.x,b.x-=g.x,b.name=e,b}b.exports=d},{}],23:[function(a,b,c){\"use strict\";function d(a,b,c,d,h){function i(){r&&s&&(x=document.createElementNS(g.svg,\"path\"),x.id=\"gmark_\"+A.from+\"_\"+A.to,x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" \"+s.x+\",\"+s.y),x.setAttribute(\"style\",\"fill:none;stroke:#00F;stroke-width:1\"),j.insertBefore(x,null))}var j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[],A={words:[],from:0,shape:\"\",to:0,label:\"\"},B={};if(b){for(k in b)if(h.period=b[k].period?b[k].period:1,h.phase=(b[k].phase?2*b[k].phase:0)+h.xmin_cfg,m=b[k].node)for(z=m.split(\"\"),n=0;z.length;)o=z.shift(),\".\"!==o&&(B[o]={x:h.xs*(2*n*h.period*h.hscale-h.phase)+h.xlabel,y:k*h.yo+h.y0+.5*h.ys}),n+=1;if(j=document.createElementNS(g.svg,\"g\"),j.id=\"wavearcs_\"+c,a.insertBefore(j,null),d.edge)for(k in d.edge)if(A.words=d.edge[k].split(\" \"),A.label=d.edge[k].substring(A.words[0].length),A.label=A.label.substring(1),A.from=A.words[0].substr(0,1),A.to=A.words[0].substr(-1,1),A.shape=A.words[0].slice(1,-1),r=B[A.from],s=B[A.to],i(),r&&s){switch(A.label&&(p=e.parse(A.label),p.unshift(\"text\",{style:\"font-size:10px;\",\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),p=f(p),q=f([\"rect\",{height:9,style:\"fill:#FFF;\"}]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width,q.setAttribute(\"width\",y)),t=s.x-r.x,u=s.y-r.y,v=(r.x+s.x)/2,w=(r.y+s.y)/2,A.shape){case\"-\":break;case\"~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~-\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"<->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"<~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"<-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"<-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"<-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;default:x.setAttribute(\"style\",\"fill:none;stroke:#F00;stroke-width:1\")}A.label&&(p.setAttribute(\"x\",v),p.setAttribute(\"y\",w+3),q.setAttribute(\"x\",v-y/2),q.setAttribute(\"y\",w-5))}for(l in B)l===l.toLowerCase()&&B[l].x>0&&(q=f([\"rect\",{y:B[l].y-4,height:8,style:\"fill:#FFF;\"}]),p=f([\"text\",{style:\"font-size:8px;\",x:B[l].x,y:B[l].y+2,\"text-anchor\":\"middle\"},l+\"\"]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width+2,q.setAttribute(\"x\",B[l].x-y/2),q.setAttribute(\"width\",y))}}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30,tspan:33}],24:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f;for(b.xmax=Math.max(b.xmax,b.x),c=b.y,f=a.length,e=1;e<f;e++)\"[object Array]\"===Object.prototype.toString.call(a[e])?b=d(a[e],{x:b.x+1,y:b.y,xmax:b.xmax}):(a[e]={name:a[e],x:b.x+1,y:b.y},b.y+=2);return a[0]={name:a[0],x:b.x,y:Math.round((c+(b.y-2))/2)},b.x--,b}function e(a,b,c){var d,e,f=\" M 4,0 C 4,1.1 3.1,2 2,2 0.9,2 0,1.1 0,0 c 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 z\",g={\"~\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\"+f,\"=\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\",\"&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\",\"~&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\"+f,\"|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\",\"~|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\"+f,\"^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\",\"~^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\"+f,\"+\":\"m -8,5 0,-10 m -5,5 10,0 m 3,0 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\",\"*\":\"m -4,4 -8,-8 m 0,8 8,-8 m 4,4 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\"},h={BUF:1,INV:1,AND:\"&\",NAND:\"&\",OR:\"â‰¥1\",NOR:\"â‰¥1\",XOR:\"=1\",XNOR:\"=1\",box:\"\"},i={INV:1,NAND:1,NOR:1,XNOR:1};return c===b&&(c=4,b=-4),d=g[a],e=h[a],d?[\"path\",{class:\"gate\",d:d}]:e?[\"g\",[\"path\",{class:\"gate\",d:\"m -16,\"+(b-3)+\" 16,0 0,\"+(c-b+6)+\" -16,0 z\"+(i[a]?f:\"\")}],[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},e+\"\"]]]:[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},a+\"\"]]}function f(a){var b,c,d,f=[\"g\"],g=[],h=a.length;for(b=2;b<h;b++)g.push(a[b][1]);for(c=Math.min.apply(null,g),d=Math.max.apply(null,g),f.push([\"g\",{transform:\"translate(16,0)\"},[\"path\",{d:\"M  \"+a[2][0]+\",\"+c+\" \"+a[2][0]+\",\"+d,class:\"wire\"}]]),b=2;b<h;b++)f.push([\"g\",[\"path\",{d:\"m  \"+a[b][0]+\",\"+a[b][1]+\" 16,0\",class:\"wire\"}]]);return f.push([\"g\",{transform:\"translate(\"+a[1][0]+\",\"+a[1][1]+\")\"},[\"title\",a[0]],e(a[0],c-a[1][1],d-a[1][1])]),f}function g(a,b){var c,d,e,h,i,j=[\"g\"],k=[];if(\"[object Array]\"===Object.prototype.toString.call(a)){for(d=a.length,k.push(a[0].name),k.push([32*(b-a[0].x),8*a[0].y]),c=1;c<d;c++)\"[object Array]\"===Object.prototype.toString.call(a[c])?k.push([32*(b-a[c][0].x),8*a[c][0].y]):k.push([32*(b-a[c].x),8*a[c].y]);for(j.push(f(k)),c=1;c<d;c++)j.push(g(a[c],b))}else i=a.name,e=32*(b-a.x),h=8*a.y,j.push([\"g\",{transform:\"translate(\"+e+\",\"+h+\")\"},[\"title\",i],[\"path\",{d:\"M 2,0 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z\"}],[\"text\",[\"tspan\",{x:\"-4\",y:\"4\",class:\"pinname\"},i]]]);return j}function h(a,b){var c,e,f,h,j,k,l,m,n,o,p=[\"g\"],q=[\"g\"];for(m=b.assign.length,e={x:0,y:2,xmax:0},c=b.assign,l=0;l<m;l++)e=d(c[l],e),e.x++;for(f=e.xmax+3,l=0;l<m;l++)p.push(g(c[l],f));for(j=32*(f+1)+1,k=8*(e.y+1)-7,m=4*(f+1),o=e.y+1,l=0;l<=m;l++)for(n=0;n<=o;n++)q.push([\"rect\",{height:1,width:1,x:8*l-.5,y:8*n-.5,class:\"grid\"}]);h=document.getElementById(\"svgcontent_\"+a),h.setAttribute(\"viewBox\",\"0 0 \"+j+\" \"+k),h.setAttribute(\"width\",j),h.setAttribute(\"height\",k),h.insertBefore(i([\"g\",{transform:\"translate(0.5, 0.5)\"},q,p]),null)}var i=a(\"./create-element\");b.exports=h},{\"./create-element\":2}],25:[function(a,b,c){\"use strict\";function d(a,b,c,d){var f,g,h,i,j,k,l,m,n=[];if(b){g=document.createElementNS(e.svg,\"g\"),g.id=\"wavegaps_\"+c,a.insertBefore(g,null),l=!1;for(f in b)if(d.period=b[f].period?b[f].period:1,d.phase=(b[f].phase?2*b[f].phase:0)+d.xmin_cfg,h=document.createElementNS(e.svg,\"g\"),h.id=\"wavegap_\"+f+\"_\"+c,h.setAttribute(\"transform\",\"translate(0,\"+(d.y0+f*d.yo)+\")\"),g.insertBefore(h,null),k=b[f].wave)for(n=k.split(\"\"),j=0;n.length;)m=n.shift(),\"<\"===m&&(l=!0,m=n.shift()),\">\"===m&&(l=!1,m=n.shift()),j+=l?1:2*d.period,\"|\"===m&&(i=document.createElementNS(e.svg,\"use\"),i.setAttributeNS(e.xlink,\"xlink:href\",\"#gap\"),i.setAttribute(\"transform\",\"translate(\"+d.xs*((j-(l?0:d.period))*d.hscale-d.phase)+\")\"),h.insertBefore(i,null))}}var e=a(\"./w3\");b.exports=d},{\"./w3\":30}],26:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h=[\"g\"];return a.forEach(function(a,i){h.push([\"path\",{id:\"group_\"+i+\"_\"+b,d:\"m \"+(a.x+.5)+\",\"+(a.y*c.yo+3.5+c.yh0+c.yh1)+\" c -3,0 -5,2 -5,5 l 0,\"+(a.height*c.yo-16)+\" c 0,3 2,5 5,5\",style:\"stroke:#0041c4;stroke-width:1;fill:none\"}]),void 0!==a.name&&(d=a.x-10,f=c.yo*(a.y+a.height/2)+c.yh0+c.yh1,g=e.parse(a.name),g.unshift(\"text\",{\"text-anchor\":\"middle\",class:\"info\",\"xml:space\":\"preserve\"}),h.push([\"g\",{transform:\"translate(\"+d+\",\"+f+\")\"},[\"g\",{transform:\"rotate(270)\"},g]]))}),h}var e=a(\"tspan\");b.exports=d},{tspan:33}],27:[function(a,b,c){\"use strict\";function d(a,b,c,d){function g(a,b,c){var d;a[b]&&a[b].text&&(d=e.parse(a[b].text),d.unshift(\"text\",{x:a.xmax*a.xs/2,y:c,\"text-anchor\":\"middle\",fill:\"#000\",\"xml:space\":\"preserve\"}),d=f(d),j.insertBefore(d,null))}function h(a,b,c,d,g,h,k){var l,m,n,o,p=1,q=0,r=[];if(void 0!==a[b]&&void 0!==a[b][c]){if(n=a[b][c],\"string\"==typeof n)n=n.split(\" \");else if(\"number\"==typeof n||\"boolean\"==typeof n)for(m=Number(n),n=[],i=0;i<k;i+=1)n.push(i+m);if(\"[object Array]\"===Object.prototype.toString.call(n)&&0!==n.length){if(1===n.length)if(m=Number(n[0]),isNaN(m))r=n;else for(i=0;i<k;i+=1)r[i]=i+m;else if(2===n.length)if(m=Number(n[0]),p=Number(n[1]),o=n[1].split(\".\"),2===o.length&&(q=o[1].length),isNaN(m)||isNaN(p))r=n;else for(m=p*m,i=0;i<k;i+=1)r[i]=(p*i+m).toFixed(q);else r=n;for(i=0;i<k;i+=1)o=r[i],l=e.parse(o),l.unshift(\"text\",{x:i*g+d,y:h,\"text-anchor\":\"middle\",class:\"muted\",\"xml:space\":\"preserve\"}),l=f(l),j.insertBefore(l,null)}}}var i,j,k,l,m,n;for(l=2*d.hscale,m=l*d.xs,k=d.xmax/l,n=b.length*d.yo,j=f([\"g\",{id:\"gmarks_\"+c}]),a.insertBefore(j,a.firstChild),i=0;i<k+1;i+=1)j.insertBefore(f([\"path\",{id:\"gmark_\"+i+\"_\"+c,d:\"m \"+i*m+\",0 0,\"+n,style:\"stroke:#888;stroke-width:0.5;stroke-dasharray:1,3\"}]),null);g(d,\"head\",d.yh0?-33:-13),g(d,\"foot\",n+(d.yf0?45:25)),h(d,\"head\",\"tick\",0,m,-5,k+1),h(d,\"head\",\"tock\",m/2,m,-5,k),h(d,\"foot\",\"tick\",0,m,n+15,k+1),h(d,\"foot\",\"tock\",m/2,m,n+15,k)}var e=a(\"tspan\"),f=a(\"./create-element\");b.exports=d},{\"./create-element\":2,tspan:33}],28:[function(a,b,c){\"use strict\";function d(a,b,c){var d,r,s,t,u,v,w,x,y,z=0;if(b.signal){p(a,document.getElementById(c+a),b,f),h(b,f),d=e(b.signal,{x:0,y:0,xmax:0,width:[],lanes:[],groups:[]}),r=document.getElementById(\"lanes_\"+a),s=document.getElementById(\"groups_\"+a),u=i(d.lanes,f),x=m(r,u,a,f);for(y in x)z=Math.max(z,x[y]+d.width[y]);j(r,u,a,f),o(r,d.lanes,a,b,f),k(r,d.lanes,a,f),s.insertBefore(g(l(d.groups,a,f)),null),f.xg=Math.ceil((z-f.tgo)/f.xs)*f.xs,v=f.xg+f.xs*(f.xmax+1),w=u.length*f.yo+f.yh0+f.yh1+f.yf0+f.yf1,t=document.getElementById(\"svgcontent_\"+a),t.setAttribute(\"viewBox\",\"0 0 \"+v+\" \"+w),t.setAttribute(\"width\",v),t.setAttribute(\"height\",w),t.setAttribute(\"overflow\",\"hidden\"),r.setAttribute(\"transform\",\"translate(\"+(f.xg+.5)+\", \"+(f.yh0+f.yh1+.5)+\")\")}else b.assign&&(q(a,document.getElementById(c+a),b),n(a,b))}var e=a(\"./rec\"),f=a(\"./lane\"),g=a(\"./create-element\"),h=a(\"./parse-config\"),i=a(\"./parse-wave-lanes\"),j=a(\"./render-marks\"),k=a(\"./render-gaps\"),l=a(\"./render-groups\"),m=a(\"./render-wave-lane\"),n=a(\"./render-assign\"),o=a(\"./render-arcs\"),p=a(\"./insert-svg-template\"),q=a(\"./insert-svg-template-assign\");b.exports=d},{\"./create-element\":2,\"./insert-svg-template\":11,\"./insert-svg-template-assign\":10,\"./lane\":17,\"./parse-config\":18,\"./parse-wave-lanes\":20,\"./rec\":22,\"./render-arcs\":23,\"./render-assign\":24,\"./render-gaps\":25,\"./render-groups\":26,\"./render-marks\":27,\"./render-wave-lane\":29}],29:[function(a,b,c){\"use strict\";function d(a,b,c,d){var i,j,k,l,m,n,o,p,q,r=[1],s=0,t=0,u=[];for(j=0;j<b.length;j+=1)if(p=b[j][0][0],p&&(l=f([\"g\",{id:\"wavelane_\"+j+\"_\"+c,transform:\"translate(0,\"+(d.y0+j*d.yo)+\")\"}]),a.insertBefore(l,null),n=e.parse(p),n.unshift(\"text\",{x:d.tgo,y:d.ym,class:\"info\",\"text-anchor\":\"end\",\"xml:space\":\"preserve\"}),n=f(n),l.insertBefore(n,null),u.push(n.getBBox().width),q=b[j][0][1],q=q>0?Math.ceil(2*q)-2*q:-2*q,m=f([\"g\",{id:\"wavelane_draw_\"+j+\"_\"+c,transform:\"translate(\"+q*d.xs+\", 0)\"}]),l.insertBefore(m,null),b[j][1])){for(i=0;i<b[j][1].length;i+=1)o=document.createElementNS(g.svg,\"use\"),o.setAttributeNS(g.xlink,\"xlink:href\",\"#\"+b[j][1][i]),o.setAttribute(\"transform\",\"translate(\"+i*d.xs+\")\"),m.insertBefore(o,null);if(b[j][2]&&b[j][2].length&&(r=h(b[j][1]),0!==r.length))for(k in r)b[j][2]&&\"undefined\"!=typeof b[j][2][k]&&(n=e.parse(b[j][2][k]),n.unshift(\"text\",{x:r[k]*d.xs+d.xlabel,y:d.ym,\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),n=f(n),m.insertBefore(n,null));b[j][1].length>s&&(s=b[j][1].length)}return d.xmax=Math.min(s,d.xmax_cfg-d.xmin_cfg),d.xg=t+20,u}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\"),h=a(\"./find-lane-markers\");b.exports=d},{\"./create-element\":2,\"./find-lane-markers\":5,\"./w3\":30,tspan:33}],30:[function(a,b,c){\"use strict\";b.exports={svg:\"http://www.w3.org/2000/svg\",xlink:\"http://www.w3.org/1999/xlink\",xmlns:\"http://www.w3.org/XML/1998/namespace\"}},{}],31:[function(a,b,c){\"use strict\";window.WaveDrom=window.WaveDrom||{};var d=a(\"./\");window.WaveDrom.ProcessAll=d.processAll,window.WaveDrom.RenderWaveForm=d.renderWaveForm,window.WaveDrom.EditorRefresh=d.editorRefresh,window.WaveDrom.eva=d.eva},{\"./\":9}],32:[function(a,b,c){\"use strict\";b.exports=window.WaveSkin},{}],33:[function(a,b,c){\"use strict\";function d(a,b){b.add&&b.add.split(\";\").forEach(function(b){var c=b.split(\" \");a[c[0]][c[1]]=!0}),b.del&&b.del.split(\";\").forEach(function(b){var c=b.split(\" \");delete a[c[0]][c[1]]})}function e(a){return Object.keys(a).reduce(function(b,c){var d=Object.keys(a[c]);return d.length>0&&(b[c]=d.join(\" \")),b},{})}function f(a){var b,c,f,i,j;if(void 0===a)return[];if(\"number\"==typeof a)return[a+\"\"];if(\"string\"!=typeof a)return[a];for(c=[],b={\"text-decoration\":{},\"font-weight\":{},\"font-style\":{},\"baseline-shift\":{},\"font-size\":{},\"font-family\":{}};;){if(f=a.search(g),f===-1)return c.push([\"tspan\",e(b),a]),c;if(f>0&&(j=a.slice(0,f),c.push([\"tspan\",e(b),j])),i=a.match(g)[0],d(b,h[i]),a=a.slice(f+i.length),0===a.length)return c}}var g=/<o>|<ins>|<s>|<sub>|<sup>|<b>|<i>|<tt>|<\\/o>|<\\/ins>|<\\/s>|<\\/sub>|<\\/sup>|<\\/b>|<\\/i>|<\\/tt>/,h={\"<o>\":{add:\"text-decoration overline\"},\"</o>\":{del:\"text-decoration overline\"},\"<ins>\":{add:\"text-decoration underline\"},\"</ins>\":{del:\"text-decoration underline\"},\"<s>\":{add:\"text-decoration line-through\"},\"</s>\":{del:\"text-decoration line-through\"},\"<b>\":{add:\"font-weight bold\"},\"</b>\":{del:\"font-weight bold\"},\"<i>\":{add:\"font-style italic\"},\"</i>\":{del:\"font-style italic\"},\"<sub>\":{add:\"baseline-shift sub;font-size .7em\"},\"</sub>\":{del:\"baseline-shift sub;font-size .7em\"},\"<sup>\":{add:\"baseline-shift super;font-size .7em\"},\"</sup>\":{del:\"baseline-shift super;font-size .7em\"},\"<tt>\":{add:\"font-family monospace\"},\"</tt>\":{del:\"font-family monospace\"}};c.parse=f},{}]},{},[31]);</script><div><script type=\"WaveDrom\">{\"signal\": [{\"name\": \"clk\", \"wave\": \"P...............x\"}, {\"name\": \"/HWSystem[HWSystem][count]\", \"wave\": \"x222222222222222x\", \"data\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\"]}, {\"name\": \"/HWSystem[HWSystem][bcd]\", \"wave\": \"x222222222222222x\", \"data\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][i0]\", \"wave\": \"x2..............x\", \"data\": [\"A\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][mod0]\", \"wave\": \"x222222222222222x\", \"data\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\", \"1\", \"2\", \"3\", \"4\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][div0]\", \"wave\": \"x2.........2....x\", \"data\": [\"0\", \"1\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][mod1]\", \"wave\": \"x2.........2....x\", \"data\": [\"0\", \"1\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][div1]\", \"wave\": \"x2..............x\", \"data\": [\"0\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][mod2]\", \"wave\": \"x2..............x\", \"data\": [\"0\"]}, {\"name\": \"/HWSystem[HWSystem]/IntToBCD[bcd][div2]\", \"wave\": \"x2..............x\", \"data\": [\"0\"]}], \"head\": {\"text\": \"wvf\", \"tock\": 0}}</script></div><script>WaveDrom.ProcessAll();</script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hw.getSimulator().clk(15)\n",
    "wvf.draw_wavedrom()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2344cfad",
   "metadata": {},
   "source": [
    "### Visual Feedback ###\n",
    "We combine the BCD converter with several seven segments display and use the technique used in Lesson 3 to display their values.\n",
    "\n",
    "Thus, we build a more complex simulatation environment to simultaneously test the BCD and sevent segment display."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "7921c51c",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Digit7Segment(py4hw.Logic):\n",
    "    def __init__(self, parent, name, v, led):\n",
    "        super().__init__(parent, name)\n",
    "        \n",
    "        assert(led.getWidth() == 7)\n",
    "        \n",
    "        self.addIn('v', v)\n",
    "        self.addOut('led', led)\n",
    "        \n",
    "        \n",
    "        a_minterms = [0,2,3,5,6,7,8,9,0xA,0xC,0xE,0xF]\n",
    "        b_minterms = [0,1,2,3,4,7,8,9,0xA,0xd]\n",
    "        c_minterms = [0,1,3,4,5,6,7,8,9,0xA,0xb,0xd]\n",
    "        d_minterms = [0,2,3,5,6,8,0xb,0xC,0xd,0xE]\n",
    "        e_minterms = [0,2,6,8,0xA,0xb,0xC,0xd,0xE,0xF]\n",
    "        f_minterms = [0,4,5,6,8,9,0xA,0xb,0xC,0xE,0xF]\n",
    "        g_minterms = [2,3,4,5,6,8,9,0xA,0xb,0xd,0xE,0xF]\n",
    "        \n",
    "        \n",
    "        a = self.wire('a')\n",
    "        b = self.wire('b')\n",
    "        c = self.wire('c')\n",
    "        d = self.wire('d')\n",
    "        e = self.wire('e')\n",
    "        f = self.wire('f')\n",
    "        g = self.wire('g')\n",
    "        \n",
    "        na = self.wire('na')\n",
    "        nb = self.wire('nb')\n",
    "        nc = self.wire('nc')\n",
    "        nd = self.wire('nd')\n",
    "        ne = self.wire('ne')\n",
    "        nf = self.wire('nf')\n",
    "        ng = self.wire('ng')\n",
    "        \n",
    "        py4hw.ConcatenateLSBF(self, 'led', [a,b,c,d,e,f,g], led)\n",
    "        \n",
    "        py4hw.SumOfMinterms(self, 'a', v, a_minterms, na)\n",
    "        py4hw.SumOfMinterms(self, 'b', v, b_minterms, nb)\n",
    "        py4hw.SumOfMinterms(self, 'c', v, c_minterms, nc)\n",
    "        py4hw.SumOfMinterms(self, 'd', v, d_minterms, nd)\n",
    "        py4hw.SumOfMinterms(self, 'e', v, e_minterms, ne)\n",
    "        py4hw.SumOfMinterms(self, 'f', v, f_minterms, nf)\n",
    "        py4hw.SumOfMinterms(self, 'g', v, g_minterms, ng)\n",
    "        \n",
    "        py4hw.Not(self, 'na', na, a)\n",
    "        py4hw.Not(self, 'nb', nb, b)\n",
    "        py4hw.Not(self, 'nc', nc, c)\n",
    "        py4hw.Not(self, 'nd', nd, d)\n",
    "        py4hw.Not(self, 'ne', ne, e)\n",
    "        py4hw.Not(self, 'nf', nf, f)\n",
    "        py4hw.Not(self, 'ng', ng, g)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "9da7e65f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of BCD digits: 3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1095x580 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hw = py4hw.HWSystem()\n",
    "hlp = py4hw.LogicHelper(hw)\n",
    "\n",
    "count = hw.wire('count', 8)\n",
    "bcd = hw.wire('bcd', 4*3)\n",
    "py4hw.Counter(hw, 'count', inc=hlp.hw_constant(1,1), reset=hlp.hw_constant(1,0), q=count)\n",
    "\n",
    "dut = IntToBCD(hw, 'bcd', count, bcd)\n",
    "leds = []\n",
    "\n",
    "for i in range(3):\n",
    "    rng = hlp.hw_range(bcd, 4*(i+1)-1, 4*i)\n",
    "    led = hw.wire('led{}'.format(i),7)\n",
    "    Digit7Segment(hw, 'sev{}'.format(i), rng, led)\n",
    "    leds.append(led)\n",
    "\n",
    "wvf = py4hw.Waveform(hw, 'wvf', list(dut._wires.values()))\n",
    "sch = py4hw.Schematic(dut)\n",
    "sch.draw()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d0bfd8b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def drawSevenSegments(i, v):\n",
    "    plt.subplot(1,16,i+1)\n",
    "\n",
    "    sp = 0.5\n",
    "    ll = 5\n",
    "    hx = np.array([0, sp, ll-sp, ll, ll-sp, sp])\n",
    "    hy = np.array([0, sp, sp, 0, -sp, -sp])\n",
    "    vx = np.array([0, sp, sp, 0, -sp, -sp])\n",
    "    vy = np.array([0, sp, ll-sp, ll, ll-sp, sp])\n",
    "    led_x=[None]*7\n",
    "    led_y=[None]*7\n",
    "\n",
    "    led_x[0] , led_y[0] = hx , hy + 2*ll     # LED a\n",
    "    led_x[1] , led_y[1] = vx + ll, vy + ll     # LED b\n",
    "    led_x[2] , led_y[2] = vx + ll, vy      # LED c\n",
    "    led_x[3] , led_y[3] = hx , hy     # LED d\n",
    "    led_x[4] , led_y[4] = vx , vy      # LED e\n",
    "    led_x[5] , led_y[5] = vx , vy + ll     # LED f\n",
    "    led_x[6] , led_y[6] = hx , hy + ll     # LED g\n",
    "    \n",
    "    vi = v.get()\n",
    "    for i in range(7):\n",
    "        if (not(vi & 1)):\n",
    "            plt.fill(led_x[i], led_y[i], edgecolor='black', facecolor='red')\n",
    "        vi = vi >> 1\n",
    "    \n",
    "    plt.xlim(-sp,ll+sp)\n",
    "    plt.ylim(-sp, 2*ll+sp)\n",
    "    plt.axis('off')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "3fdc379b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF4AAABECAYAAAAIn4KTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEmElEQVR4nO2cXWgcVRSAv5vNbDe7O/lpUw0WQxqtWA1WC1qthYhopSD4U6XQl4rxRbEPFhGh2IciloI+iFaLvqhv6kPTBymIgn/BFBX8owFTHyy0FdLWdtOZbH52jw87K0shM9vZzNxSzwcXJuTsObPf3MzeMGevERGU9GmzfQL/V1S8JVS8JVS8JVS8JdqbDew05t0yPJOBapxCC5Bx4BVfZF+c1191iEjkcGDHKvD+AZGY4wRIN/ht8GAzNa/2ER0ADyyD8m8tSK+Pr0Cy4ANDab3BNrgPWJ+aUBhqZnJFJektwFQB5LUlED8C1QJIEf4AOlKQcGcB/DycB/pTqNeXhzMFKAPDscW7MLYLZr8GyYMcBvkr5jgIUgD5HeQJ8F34JGEJ1+Rh6hDIfph34VjC9RwXftwNc5/XfJ2PLf4mmJ4PZutuqBahXISzcUYXzB0Mcnkgy8FLUkQG9o7AnIBUQTbCxYTFPzIE05XgPe6ChbD40FXNKqjUAwbBOHD4nMi2OB/iK40ZH4ANAHlgOczHydMsGcjdAA6AAVYnWaxGth+q9fX5IGTCgnUdbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVbwkVb4lQ8bLIcVwuyWGWIGXT9dLoib6ceqHifwDnGDALvAWeD9/HPalZGH8T/CrwDXAyYfHz8NP74E0DJ4DPkr/QE99C+yQwAxwALzQ64oHxU9eDtx3KLhwBTAsPg7Mu/Pw8zHfXems2J/nwWUQowodbwLsVLubg5aTrOfDcavC2wowLh0J9RCUrwJdurS+lawmexA90gt8OHyQtIai3rBv+LsAvrUyay6hn8vBdN5wFCmGxobcaY8xdBu7uh2wHvBj/r7CGC3tvhrYsPG6MubHVfFE4MNIDrgNrgM1J1wM2tcH6PsjlYGdoZNhVycOZUZBTtT4YH9gSdza0w8gAeCWQt6FShD8Tnn0bXPAmQYKGrFLC9frycO5I0CfaBX5ofNgv74EL9fa7A7Wm04/jntgKGB8NclVB+mE6SREO7N/T0D64NeEGKuDJ+6FUr/c6SFh86K0m17AqytHassAEOerHWai0kK6ZeibX8HMuhRXlpb7C0H+gLKHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLaHiLRH6lXq/4cJ4QBXuXWHMaJxCAmsmgIdqx5QjvnLeKsGeCf/hpdBA5TfUCG+qCVoeFqNozOn34NpNYG4DtgMbY57UcZA3gF/BfAoLr8JkSeSWmOkiMcbcXoCxo5A/CTwKF3yR7gTr9RZg4iPoXQfcATMlkfyiL4h4gLsuD94gVB+GSqv71TwLCyuh0pHS/jEZ2HEdeG6tQ2I46XoE++MMgO/AztDYqGQGXihCZWoJNgo6DhLsafZY0hLqowf25ODptOplYFsP7COigaqpZEV4Zxi8hRak+yBra610L6Ul4Uoeoff4hvuX0wljg7C2J2ZbxmloPwVflGqzPY3m3SuapsQrS4+u4y2h4i2h4i2h4i2h4i2h4i3xL/NBu70kgcSaAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF4AAABECAYAAAAIn4KTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFRElEQVR4nO3cX4xcVR3A8c/Z7bS782fb0oIElG631QQtVkxoCRLrg0KaGFHBEHhpQzFRAg9UY0gKPlgj0cTEv9Dgi9bEB32oPBgSUILGRhrRKBpItA9oQtG0Qtn2Tpfu7hwfZjZuzO7MeGdnj+L5Jid7d/Ob3+/c75x7507ub2+IMcqsPiOpJ/D/ShafiCw+EVl8IrL4RKzpN3AihEdnuHuUVplCc4xWeKgZ48NlXv+mI8bYc1TYdyXFa8RYcvyVuIHmCB/qp+abffQO4IPrmPnDANIXxjPEtTSxY7V2cIQP4L1d9q8SuAu1FRHKjn4WV68km2ucrhG/tALiD9CqEev8CeNDX1VcV6NZ5SyuWiqmxqN15hocQxiw3uVVztSYwZ7S4hscP8gbPydWiY8T/1JyHCHWiH8k3kazwQ+HLP2yKqePEb/MbIMXloq7guIU8WrOr+OzA9SrNHjuEBefbPs6W1r8Ozg321mth2jVmanzjzJjPRePdHIVxEsohil+lC8c4GIktog3cH6puBOdOb1EHGGu7KrHLTs4N9/Jd5C5bvFdr2quZH4hYIpQ4fFXY7y9zIf4pSE8O8luqOISZsvk6ZdRxrZRgYCty8RNdn5uQYvRAUquvYrWwvX5VI9c+To+EVl8IrL4RGTxicjiE5HFJyKLT0QWn4gsPhFZfCKy+ERk8YnI4hORxScii09EFp+ILD4RXe9AxWW2y/JvOcIKpOy73nLzX/j7omahO0IoNbXdry9ayL18dRX/ayovYBu+SdHkV2VmBG/w7Ne55iaqv8TLQxY/y2++Q3Eftdfwk2XqfYvZw1TuIF6O6zlSpl6LkaeoPYUb8W2Ke7u9oMcN4/1vo7iTmQZPGKD9AWsb/O5eZje0e2tuGubN7hijOt/bS/Euzo/xwFIxVc7sJzaIJwdsX3mE1gStj3ChwbHSXQYxRjV+1mj3pawfVAQmJ2iu4bvDlt6pt24Df6vx++UWDa5vMP/YCvQNtYjvb/cONfVokOo18V319oppjnN4UBENju5ipso0tg9bfIV7tlJ0jrCbu8R9aivF9IDif9HpP5qiudwRtjBCR/CS1EI48wM27cIOLrzKrTHGJ8qcAyshHHgr33ie6lFaD/DSuRi3lcnVDyGE3Q2e/i3VU9jLuSLGiWViQ4PvX8ettzFWpl7EgziIfbiGC2djrC4X3/XDdSeVWzrbhxk/xH7tc/1/zHo++TWqDdzDyFe4rEyefqnw8fupbsd27O3S5xJjjCGEu0/w9+fYVKZei8kt7H6w88Y9xHi3+K7ixxZdFY0Z7DIk+NdSCljL/ADp+qkXFi/dxfuyFDHGGXymdL0QPrGFa3V2s9dhk79AJSKLT0QWn4gsPhFZfCKy+ERk8YnI4hORxScii09EFp+ILD4RWXwisvhEZPGJyOITkcUnousdqOaiN6ZAi/dtCuHHZQpF3v4ibm5vmxns39f7qReLRb8Xq9BA1VxUo+gWSPeb3fUQXnmMt9xIeDfuxA0lJ3WS+FU8T/gRc1/kz9MxvrNkup6EEN5T4/gJqi/jo7zejHHDEOttrvHiUTbvxLVcmO5ys7tXe8fOKsUUrQ8zP2jfyaeZu5T58S7Pj1nJMcq+Kyga7faOPcOup/N8nEmaFe7rGtsrWeD+OvOnV6Dh5ySx80yzjw1bwsLYyOfHuGu16o1y+0Ye1qPrrq9kdR7ZQzE3gPSm9sN4xvjcakn4bx5dz/GLzl+VCY5PcfXGkm0Zr7DmFD+dbq/2lWg+/p+mL/GZlSdfxycii09EFp+ILD4RWXwisvhE/BM1vJsRMDJ6EwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x72 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(15):\n",
    "    plt.figure(figsize=(8,1))\n",
    "\n",
    "    hw.getSimulator().clk()\n",
    "\n",
    "    for i in range(3):\n",
    "        drawSevenSegments(i, leds[2-i])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "240aa359",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
